package com.softeem.dg;

/**
 * 算阶乘
 * 5! = 5 * 4 * 3 * 2 * 1;
 */
public class Factorial {

    /**
     * 递归的基本概念:通过方法自己调用自己的形式,层层往里走,最终符合条件的时候给出返回值
     * 1、方法要有一个参数,这个参数也是执行整个递归的条件
     * 2、方法要有一个返回值,返回值也是我们最终得到结果的前提
     * @param i
     * @return
     */
    private static int getFactorial(int i) {//i = 5;         i = 4            i = 3                     i = 2                      i = 1                     i = 0
        if(i == 0){
            return 1;
        }else{
            return i * getFactorial(i - 1);//5 * f(5 - 1)  5 * 4 * f(4 - 1)  5 * 4 * 3 * f(3 - 1)    5 * 4 * 3 * 2 * f(2 - 1)   5 * 4 * 3 * 2 *  1            1
        }
    }

    public static void main(String[] args) {
        int num = getFactorial(5);
        System.out.println(num);
    }


}
